{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-video",
      "artifactVersion": "2021.62.7",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.platform.video",
          "org.nuxeo.ecm.platform.video.jsf",
          "org.nuxeo.ecm.platform.video.rest"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video",
        "id": "grp:org.nuxeo.ecm.platform.video",
        "name": "org.nuxeo.ecm.platform.video",
        "parentIds": [
          "grp:org.nuxeo.ecm.platform"
        ],
        "readmes": [],
        "version": "2021.62"
      },
      "bundleId": "org.nuxeo.ecm.platform.video",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.DocumentAdapterService--adapters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.adapters/Contributions/org.nuxeo.platform.video.core.adapters--adapters",
              "id": "org.nuxeo.platform.video.core.adapters--adapters",
              "registrationOrder": 22,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.DocumentAdapterService",
                "name": "org.nuxeo.ecm.core.api.DocumentAdapterService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"adapters\" target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\">\n     <adapter class=\"org.nuxeo.ecm.platform.video.VideoDocument\" factory=\"org.nuxeo.ecm.platform.video.adapter.VideoDocumentAdapterFactory\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.adapters",
          "name": "org.nuxeo.platform.video.core.adapters",
          "requirements": [],
          "resolutionOrder": 586,
          "services": [],
          "startOrder": 719,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.platform.video.core.adapters\">\n\n  <extension target=\"org.nuxeo.ecm.core.api.DocumentAdapterService\" point=\"adapters\">\n     <adapter class=\"org.nuxeo.ecm.platform.video.VideoDocument\"\n       factory=\"org.nuxeo.ecm.platform.video.adapter.VideoDocumentAdapterFactory\"/>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/adapters-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent--command",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.convert.commandline/Contributions/org.nuxeo.ecm.platform.video.convert.commandline--command",
              "id": "org.nuxeo.ecm.platform.video.convert.commandline--command",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "name": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"command\" target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\">\n\n    <command enabled=\"true\" name=\"ffmpeg-info\">\n      <commandLine>ffprobe</commandLine>\n      <parameterString> #{inFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-screenshot\">\n      <commandLine>ffmpeg</commandLine>\n      <!-- It's important to put the -ss option before the -i option for\n        faster (though less accurate) seek / skip to position in the input file -->\n      <parameterString> -y -ss #{position} -i #{inFilePath} -frames:v 1 -f image2 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-screenshot-resize\">\n      <commandLine>ffmpeg</commandLine>\n      <!-- It's important to put the -ss option before the -i option for faster\n        (though less accurate) seek / skip to position in the input file.\n\n        The -frames:v 1 option tell to take only one screenshot. -->\n      <parameterString> -y -ss #{position} -i #{inFilePath} -frames:v 1 -f image2 -vf scale=#{width}:#{height} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-towebm\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec libvorbis -v 0 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-tomp4\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec aac -strict -2 -pix_fmt yuv420p -vcodec libx264 -v 0 #{outFilePath}</parameterString>\n      <winParameterString> -i #{inFilePath} -s #{width}x#{height} -pix_fmt yuv420p -vcodec libx264 -v 0 #{outFilePath}</winParameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-toogg\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec libvorbis -v 0 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"ffmpeg-toavi\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -q:v 0 -c:v mpeg4 -c:a ac3 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.\n      </installationDirective>\n    </command>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.convert.commandline",
          "name": "org.nuxeo.ecm.platform.video.convert.commandline",
          "requirements": [
            "org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib"
          ],
          "resolutionOrder": 587,
          "services": [],
          "startOrder": 577,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.convert.commandline\">\n\n  <require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>\n\n  <extension\n    target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\"\n    point=\"command\">\n\n    <command name=\"ffmpeg-info\" enabled=\"true\">\n      <commandLine>ffprobe</commandLine>\n      <parameterString> #{inFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-screenshot\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <!-- It's important to put the -ss option before the -i option for\n        faster (though less accurate) seek / skip to position in the input file -->\n      <parameterString> -y -ss #{position} -i #{inFilePath} -frames:v 1 -f image2 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-screenshot-resize\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <!-- It's important to put the -ss option before the -i option for faster\n        (though less accurate) seek / skip to position in the input file.\n\n        The -frames:v 1 option tell to take only one screenshot. -->\n      <parameterString> -y -ss #{position} -i #{inFilePath} -frames:v 1 -f image2 -vf scale=#{width}:#{height} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-towebm\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec libvorbis -v 0 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-tomp4\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec aac -strict -2 -pix_fmt yuv420p -vcodec libx264 -v 0 #{outFilePath}</parameterString>\n      <winParameterString> -i #{inFilePath} -s #{width}x#{height} -pix_fmt yuv420p -vcodec libx264 -v 0 #{outFilePath}</winParameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-toogg\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -acodec libvorbis -v 0 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg from http://ffmpeg.org (apt-get install ffmpeg)\n      </installationDirective>\n    </command>\n\n    <command name=\"ffmpeg-toavi\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString> -i #{inFilePath} -s #{width}x#{height} -q:v 0 -c:v mpeg4 -c:a ac3 #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.\n      </installationDirective>\n    </command>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/commandline-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.bulk--actions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.bulk/Contributions/org.nuxeo.ecm.platform.video.bulk--actions",
              "id": "org.nuxeo.ecm.platform.video.bulk--actions",
              "registrationOrder": 8,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.bulk",
                "name": "org.nuxeo.ecm.core.bulk",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"actions\" target=\"org.nuxeo.ecm.core.bulk\">\n    <action batchSize=\"1\" bucketSize=\"2\" inputStream=\"bulk/recomputeVideoConversion\" name=\"recomputeVideoConversion\" validationClass=\"org.nuxeo.ecm.platform.video.action.RecomputeVideoConversionsActionValidation\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.stream.service--streamProcessor",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.bulk/Contributions/org.nuxeo.ecm.platform.video.bulk--streamProcessor",
              "id": "org.nuxeo.ecm.platform.video.bulk--streamProcessor",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.stream.service",
                "name": "org.nuxeo.runtime.stream.service",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"streamProcessor\" target=\"org.nuxeo.runtime.stream.service\">\n    <streamProcessor class=\"org.nuxeo.ecm.platform.video.action.RecomputeVideoConversionsAction\" defaultConcurrency=\"2\" defaultPartitions=\"6\" name=\"recomputeVideoConversions\">\n      <policy continueOnFailure=\"true\" delay=\"5s\" maxDelay=\"10s\" maxRetries=\"1\" name=\"default\"/>\n    </streamProcessor>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.bulk",
          "name": "org.nuxeo.ecm.platform.video.bulk",
          "requirements": [],
          "resolutionOrder": 588,
          "services": [],
          "startOrder": 576,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.bulk\" version=\"1.0.0\">\n\n  <extension target=\"org.nuxeo.ecm.core.bulk\" point=\"actions\">\n    <action name=\"recomputeVideoConversion\" inputStream=\"bulk/recomputeVideoConversion\" bucketSize=\"2\" batchSize=\"1\"\n      validationClass=\"org.nuxeo.ecm.platform.video.action.RecomputeVideoConversionsActionValidation\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.runtime.stream.service\" point=\"streamProcessor\">\n    <streamProcessor name=\"recomputeVideoConversions\" class=\"org.nuxeo.ecm.platform.video.action.RecomputeVideoConversionsAction\"\n      defaultConcurrency=\"${nuxeo.bulk.action.recomputeVideoConversions.defaultConcurrency:=2}\"\n      defaultPartitions=\"${nuxeo.bulk.action.recomputeVideoConversions.defaultPartitions:=6}\">\n      <policy name=\"default\" maxRetries=\"${nuxeo.bulk.action.recomputeVideoConversions.maxRetries:=1}\" delay=\"5s\" maxDelay=\"10s\" continueOnFailure=\"true\" />\n    </streamProcessor>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-bulk-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl--converter",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.convert.converters/Contributions/org.nuxeo.ecm.platform.video.convert.converters--converter",
              "id": "org.nuxeo.ecm.platform.video.convert.converters--converter",
              "registrationOrder": 7,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.convert.service.ConversionServiceImpl",
                "name": "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"converter\" target=\"org.nuxeo.ecm.core.convert.service.ConversionServiceImpl\">\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.StoryboardConverter\" name=\"videoStoryboard\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.ScreenshotConverter\" name=\"videoScreenshot\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\" name=\"convertToWebM\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/webm</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-towebm</parameter>\n        <parameter name=\"videoMimeType\">video/webm</parameter>\n        <parameter name=\"videoExtension\">webm</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToWebM</parameter>\n      </parameters>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\" name=\"convertToMP4\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/mp4</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-tomp4</parameter>\n        <parameter name=\"videoMimeType\">video/mp4</parameter>\n        <parameter name=\"videoExtension\">mp4</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToMP4</parameter>\n      </parameters>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\" name=\"convertToOgg\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/ogg</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-toogg</parameter>\n        <parameter name=\"videoMimeType\">video/ogg</parameter>\n        <parameter name=\"videoExtension\">ogg</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToOgg</parameter>\n      </parameters>\n    </converter>\n\n    <converter class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\" name=\"convertToAVI\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/x-msvideo</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-toavi</parameter>\n        <parameter name=\"videoMimeType\">video/x-msvideo</parameter>\n        <parameter name=\"videoExtension\">avi</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToAVI</parameter>\n      </parameters>\n    </converter>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.convert.converters",
          "name": "org.nuxeo.ecm.platform.video.convert.converters",
          "requirements": [],
          "resolutionOrder": 589,
          "services": [],
          "startOrder": 578,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.convert.converters\">\n\n  <extension target=\"org.nuxeo.ecm.core.convert.service.ConversionServiceImpl\"\n    point=\"converter\">\n\n    <converter name=\"videoStoryboard\"\n      class=\"org.nuxeo.ecm.platform.video.convert.StoryboardConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n    </converter>\n\n    <converter name=\"videoScreenshot\"\n      class=\"org.nuxeo.ecm.platform.video.convert.ScreenshotConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>image/jpeg</destinationMimeType>\n    </converter>\n\n    <converter name=\"convertToWebM\"\n      class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/webm</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-towebm</parameter>\n        <parameter name=\"videoMimeType\">video/webm</parameter>\n        <parameter name=\"videoExtension\">webm</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToWebM</parameter>\n      </parameters>\n    </converter>\n\n    <converter name=\"convertToMP4\"\n      class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/mp4</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-tomp4</parameter>\n        <parameter name=\"videoMimeType\">video/mp4</parameter>\n        <parameter name=\"videoExtension\">mp4</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToMP4</parameter>\n      </parameters>\n    </converter>\n\n    <converter name=\"convertToOgg\"\n      class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/ogg</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-toogg</parameter>\n        <parameter name=\"videoMimeType\">video/ogg</parameter>\n        <parameter name=\"videoExtension\">ogg</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToOgg</parameter>\n      </parameters>\n    </converter>\n\n    <converter name=\"convertToAVI\"\n      class=\"org.nuxeo.ecm.platform.video.convert.VideoConversionConverter\">\n      <sourceMimeType>video/*</sourceMimeType>\n      <sourceMimeType>application/gxf</sourceMimeType>\n      <sourceMimeType>application/mxf</sourceMimeType>\n      <destinationMimeType>video/x-msvideo</destinationMimeType>\n      <parameters>\n        <parameter name=\"CommandLineName\">ffmpeg-toavi</parameter>\n        <parameter name=\"videoMimeType\">video/x-msvideo</parameter>\n        <parameter name=\"videoExtension\">avi</parameter>\n        <parameter name=\"tmpDirectoryPrefix\">convertToAVI</parameter>\n      </parameters>\n    </converter>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/convert-service-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.nuxeo.ecm.platform.video.doctype/Contributions/org.nuxeo.nuxeo.ecm.platform.video.doctype--schema",
              "id": "org.nuxeo.nuxeo.ecm.platform.video.doctype--schema",
              "registrationOrder": 41,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"video\" prefix=\"vid\" src=\"schemas/video.xsd\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.nuxeo.ecm.platform.video.doctype/Contributions/org.nuxeo.nuxeo.ecm.platform.video.doctype--doctype",
              "id": "org.nuxeo.nuxeo.ecm.platform.video.doctype--doctype",
              "registrationOrder": 39,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <facet name=\"Video\">\n      <schema name=\"file\"/>\n      <schema name=\"video\"/>\n      <schema name=\"picture\"/>\n    </facet>\n\n    <facet name=\"HasStoryboard\"/>\n    <facet name=\"HasVideoPreview\"/>\n\n    <doctype extends=\"Document\" name=\"Video\">\n      <schema name=\"common\"/>\n      <schema name=\"dublincore\"/>\n      <schema name=\"uid\"/>\n      <schema name=\"files\"/>\n      <facet name=\"Commentable\"/>\n      <facet name=\"Versionable\"/>\n      <facet name=\"Publishable\"/>\n      <facet name=\"Video\"/>\n      <facet name=\"HasStoryboard\"/>\n      <facet name=\"HasVideoPreview\"/>\n      <facet name=\"NXTag\"/>\n    </doctype>\n\n    <doctype append=\"true\" name=\"Workspace\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n\n    <doctype append=\"true\" name=\"Folder\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n\n    <doctype append=\"true\" name=\"OrderedFolder\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.nuxeo.ecm.platform.video.doctype",
          "name": "org.nuxeo.nuxeo.ecm.platform.video.doctype",
          "requirements": [
            "org.nuxeo.ecm.core.CoreExtensions",
            "org.nuxeo.ecm.tags.schemas"
          ],
          "resolutionOrder": 590,
          "services": [],
          "startOrder": 700,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.nuxeo.ecm.platform.video.doctype\">\n\n  <require>org.nuxeo.ecm.core.CoreExtensions</require>\n  <require>org.nuxeo.ecm.tags.schemas</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"schema\">\n    <schema name=\"video\" src=\"schemas/video.xsd\" prefix=\"vid\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"doctype\">\n    <facet name=\"Video\">\n      <schema name=\"file\" />\n      <schema name=\"video\" />\n      <schema name=\"picture\" />\n    </facet>\n\n    <facet name=\"HasStoryboard\"/>\n    <facet name=\"HasVideoPreview\"/>\n\n    <doctype name=\"Video\" extends=\"Document\">\n      <schema name=\"common\" />\n      <schema name=\"dublincore\" />\n      <schema name=\"uid\" />\n      <schema name=\"files\" />\n      <facet name=\"Commentable\" />\n      <facet name=\"Versionable\" />\n      <facet name=\"Publishable\" />\n      <facet name=\"Video\" />\n      <facet name=\"HasStoryboard\" />\n      <facet name=\"HasVideoPreview\" />\n      <facet name=\"NXTag\" />\n    </doctype>\n\n    <doctype name=\"Workspace\" append=\"true\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n\n    <doctype name=\"Folder\" append=\"true\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n\n    <doctype name=\"OrderedFolder\" append=\"true\">\n      <subtypes>\n        <type>Video</type>\n      </subtypes>\n    </doctype>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/core-types-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentation": "\n      Simple plugin for the file manager. Creates a Video Document type from\n      any of the matching mime types.\n    \n",
              "documentationHtml": "<p>\nSimple plugin for the file manager. Creates a Video Document type from\nany of the matching mime types.\n</p><p></p>",
              "extensionPoint": "org.nuxeo.ecm.platform.filemanager.service.FileManagerService--plugins",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.filemanager.contrib/Contributions/org.nuxeo.ecm.platform.video.filemanager.contrib--plugins",
              "id": "org.nuxeo.ecm.platform.video.filemanager.contrib--plugins",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.filemanager.service.FileManagerService",
                "name": "org.nuxeo.ecm.platform.filemanager.service.FileManagerService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"plugins\" target=\"org.nuxeo.ecm.platform.filemanager.service.FileManagerService\">\n    <documentation>\n      Simple plugin for the file manager. Creates a Video Document type from\n      any of the matching mime types.\n    </documentation>\n    <plugin class=\"org.nuxeo.ecm.platform.video.importer.VideoImporter\" name=\"VideoImporter\" order=\"10\">\n      <filter>video/.*</filter>\n      <filter>application/gxf</filter>\n      <filter>application/mxf</filter>\n    </plugin>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.filemanager.contrib",
          "name": "org.nuxeo.ecm.platform.video.filemanager.contrib",
          "requirements": [],
          "resolutionOrder": 591,
          "services": [],
          "startOrder": 580,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.filemanager.contrib\">\n\n  <extension\n      target=\"org.nuxeo.ecm.platform.filemanager.service.FileManagerService\"\n      point=\"plugins\">\n    <documentation>\n      Simple plugin for the file manager. Creates a Video Document type from\n      any of the matching mime types.\n    </documentation>\n    <plugin name=\"VideoImporter\"\n            class=\"org.nuxeo.ecm.platform.video.importer.VideoImporter\"\n            order=\"10\">\n      <filter>video/.*</filter>\n      <filter>application/gxf</filter>\n      <filter>application/mxf</filter>\n    </plugin>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/filemanager-importer-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.nuxeo.ecm.platform.video.lifecycle/Contributions/org.nuxeo.nuxeo.ecm.platform.video.lifecycle--types",
              "id": "org.nuxeo.nuxeo.ecm.platform.video.lifecycle--types",
              "registrationOrder": 17,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n    <types>\n      <type name=\"Video\">default</type>\n    </types>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.nuxeo.ecm.platform.video.lifecycle",
          "name": "org.nuxeo.nuxeo.ecm.platform.video.lifecycle",
          "requirements": [
            "org.nuxeo.ecm.core.LifecycleCoreExtensions"
          ],
          "resolutionOrder": 592,
          "services": [],
          "startOrder": 701,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.nuxeo.ecm.platform.video.lifecycle\">\n\n  <require>org.nuxeo.ecm.core.LifecycleCoreExtensions</require>\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n    point=\"types\">\n    <types>\n      <type name=\"Video\">default</type>\n    </types>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/lifecycle-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.types.TypeService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.jsf.types/Contributions/org.nuxeo.ecm.platform.video.jsf.types--types",
              "id": "org.nuxeo.ecm.platform.video.jsf.types--types",
              "registrationOrder": 6,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.types.TypeService",
                "name": "org.nuxeo.ecm.platform.types.TypeService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.platform.types.TypeService\">\n    <type id=\"Video\">\n      <label>Video</label>\n      <default-view>view_documents</default-view>\n      <icon>/icons/video.png</icon>\n      <bigIcon>/icons/video_big.png</bigIcon>\n      <category>SimpleDocument</category>\n      <description>Video.description</description>\n      <layouts mode=\"any\">\n        <layout>heading</layout>\n        <layout>video_file</layout>\n      </layouts>\n      <layouts mode=\"edit\">\n        <layout>heading</layout>\n        <layout>video_file</layout>\n        <layout>dublincore</layout>\n      </layouts>\n      <layouts mode=\"drive\">\n        <layout>heading</layout>\n        <layout>dublincore</layout>\n      </layouts>\n    </type>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.jsf.types",
          "name": "org.nuxeo.ecm.platform.video.jsf.types",
          "requirements": [],
          "resolutionOrder": 593,
          "services": [],
          "startOrder": 582,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.video.jsf.types\">\n\n  <extension target=\"org.nuxeo.ecm.platform.types.TypeService\" point=\"types\">\n    <type id=\"Video\">\n      <label>Video</label>\n      <default-view>view_documents</default-view>\n      <icon>/icons/video.png</icon>\n      <bigIcon>/icons/video_big.png</bigIcon>\n      <category>SimpleDocument</category>\n      <description>Video.description</description>\n      <layouts mode=\"any\">\n        <layout>heading</layout>\n        <layout>video_file</layout>\n      </layouts>\n      <layouts mode=\"edit\">\n        <layout>heading</layout>\n        <layout>video_file</layout>\n        <layout>dublincore</layout>\n      </layouts>\n      <layouts mode=\"drive\">\n        <layout>heading</layout>\n        <layout>dublincore</layout>\n      </layouts>\n    </type>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/ui-types-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.listeners/Contributions/org.nuxeo.platform.video.core.listeners--listener",
              "id": "org.nuxeo.platform.video.core.listeners--listener",
              "registrationOrder": 43,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.platform.video.listener.VideoChangedListener\" name=\"videoChangedListener\" postCommit=\"false\" priority=\"20\">\n      <event>documentCreated</event>\n      <event>beforeDocumentModification</event>\n    </listener>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.listeners",
          "name": "org.nuxeo.platform.video.core.listeners",
          "requirements": [
            "org.nuxeo.ecm.core.event.EventServiceComponent"
          ],
          "resolutionOrder": 594,
          "services": [],
          "startOrder": 720,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.platform.video.core.listeners\">\n\n  <require>org.nuxeo.ecm.core.event.EventServiceComponent</require>\n\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\" point=\"listener\">\n\n    <listener name=\"videoChangedListener\" async=\"false\" postCommit=\"false\"\n      class=\"org.nuxeo.ecm.platform.video.listener.VideoChangedListener\" priority=\"20\">\n      <event>documentCreated</event>\n      <event>beforeDocumentModification</event>\n    </listener>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-listeners-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.rendition.service.RenditionService--renditionDefinitionProviders",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.renditions/Contributions/org.nuxeo.platform.video.core.renditions--renditionDefinitionProviders",
              "id": "org.nuxeo.platform.video.core.renditions--renditionDefinitionProviders",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "name": "org.nuxeo.ecm.platform.rendition.service.RenditionService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"renditionDefinitionProviders\" target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\">\n\n    <renditionDefinitionProvider class=\"org.nuxeo.ecm.platform.video.rendition.VideoRenditionDefinitionProvider\" name=\"videoRenditionDefinitionProvider\">\n      <filters>\n        <filter-id>hasVideo</filter-id>\n      </filters>\n    </renditionDefinitionProvider>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.actions.ActionService--filters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.renditions/Contributions/org.nuxeo.platform.video.core.renditions--filters",
              "id": "org.nuxeo.platform.video.core.renditions--filters",
              "registrationOrder": 16,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.actions.ActionService",
                "name": "org.nuxeo.ecm.platform.actions.ActionService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"filters\" target=\"org.nuxeo.ecm.platform.actions.ActionService\">\n\n    <filter id=\"hasVideo\">\n      <rule grant=\"true\">\n        <facet>Video</facet>\n      </rule>\n    </filter>\n\n    <filter append=\"true\" id=\"allowPDFRendition\">\n      <rule grant=\"false\">\n        <facet>Video</facet>\n      </rule>\n    </filter>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.platform.video.core.renditions",
          "name": "org.nuxeo.platform.video.core.renditions",
          "requirements": [
            "org.nuxeo.ecm.platform.rendition.contrib"
          ],
          "resolutionOrder": 595,
          "services": [],
          "startOrder": 722,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.platform.video.core.renditions\">\n\n  <require>org.nuxeo.ecm.platform.rendition.contrib</require>\n\n  <extension target=\"org.nuxeo.ecm.platform.rendition.service.RenditionService\"\n    point=\"renditionDefinitionProviders\">\n\n    <renditionDefinitionProvider name=\"videoRenditionDefinitionProvider\"\n      class=\"org.nuxeo.ecm.platform.video.rendition.VideoRenditionDefinitionProvider\">\n      <filters>\n        <filter-id>hasVideo</filter-id>\n      </filters>\n    </renditionDefinitionProvider>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.actions.ActionService\"\n    point=\"filters\">\n\n    <filter id=\"hasVideo\">\n      <rule grant=\"true\">\n        <facet>Video</facet>\n      </rule>\n    </filter>\n\n    <filter id=\"allowPDFRendition\" append=\"true\">\n      <rule grant=\"false\">\n        <facet>Video</facet>\n      </rule>\n    </filter>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-renditions-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.video.service.VideoService--videoConversions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.contrib/Contributions/org.nuxeo.ecm.platform.video.service.contrib--videoConversions",
              "id": "org.nuxeo.ecm.platform.video.service.contrib--videoConversions",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.video.service.VideoService",
                "name": "org.nuxeo.ecm.platform.video.service.VideoService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"videoConversions\" target=\"org.nuxeo.ecm.platform.video.service.VideoService\">\n\n    <videoConversion converter=\"convertToMP4\" height=\"480\" name=\"MP4 480p\" rendition=\"true\"/>\n    <videoConversion converter=\"convertToWebM\" height=\"480\" name=\"WebM 480p\" rendition=\"true\"/>\n    <videoConversion converter=\"convertToOgg\" height=\"480\" name=\"Ogg 480p\" rendition=\"true\"/>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.video.service.VideoService--automaticVideoConversions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.contrib/Contributions/org.nuxeo.ecm.platform.video.service.contrib--automaticVideoConversions",
              "id": "org.nuxeo.ecm.platform.video.service.contrib--automaticVideoConversions",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.video.service.VideoService",
                "name": "org.nuxeo.ecm.platform.video.service.VideoService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"automaticVideoConversions\" target=\"org.nuxeo.ecm.platform.video.service.VideoService\">\n\n    <automaticVideoConversion name=\"MP4 480p\" order=\"0\"/>\n    <automaticVideoConversion name=\"WebM 480p\" order=\"10\"/>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.video.service.VideoService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.contrib/Contributions/org.nuxeo.ecm.platform.video.service.contrib--configuration",
              "id": "org.nuxeo.ecm.platform.video.service.contrib--configuration",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.video.service.VideoService",
                "name": "org.nuxeo.ecm.platform.video.service.VideoService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.ecm.platform.video.service.VideoService\">\n\n    <configuration>\n      <previewScreenshotInDurationPercent>10.0</previewScreenshotInDurationPercent>\n      <storyboardMinDuration>10</storyboardMinDuration>\n      <storyboardThumbnailCount>9</storyboardThumbnailCount>\n    </configuration>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.contrib",
          "name": "org.nuxeo.ecm.platform.video.service.contrib",
          "requirements": [],
          "resolutionOrder": 596,
          "services": [],
          "startOrder": 584,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.service.contrib\">\n\n  <extension target=\"org.nuxeo.ecm.platform.video.service.VideoService\"\n    point=\"videoConversions\">\n\n    <videoConversion name=\"MP4 480p\" converter=\"convertToMP4\" height=\"480\"\n      rendition=\"true\" />\n    <videoConversion name=\"WebM 480p\" converter=\"convertToWebM\" height=\"480\"\n      rendition=\"true\" />\n    <videoConversion name=\"Ogg 480p\" converter=\"convertToOgg\" height=\"480\"\n      rendition=\"true\" />\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.video.service.VideoService\"\n    point=\"automaticVideoConversions\">\n\n    <automaticVideoConversion name=\"MP4 480p\" order=\"0\" />\n    <automaticVideoConversion name=\"WebM 480p\" order=\"10\" />\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.platform.video.service.VideoService\"\n    point=\"configuration\">\n\n    <configuration>\n      <previewScreenshotInDurationPercent>10.0</previewScreenshotInDurationPercent>\n      <storyboardMinDuration>10</storyboardMinDuration>\n      <storyboardThumbnailCount>9</storyboardThumbnailCount>\n    </configuration>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-service-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.video.service.VideoServiceImpl",
          "documentation": "\n    The VideoService provides extension points to register\n    named video conversions and default conversions to run\n    when importing a video.\n  \n",
          "documentationHtml": "<p>\nThe VideoService provides extension points to register\nnamed video conversions and default conversions to run\nwhen importing a video.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.video.service.VideoService",
              "descriptors": [
                "org.nuxeo.ecm.platform.video.service.VideoConversion"
              ],
              "documentation": "\n      Extension point to contribute available video conversions\n      <p>\n        Since 7.2, 2 new attributes are available:\n        <ul>\n        <li>rendition: true if this video conversion should be exposed as a rendition, false otherwise.</li>\n        <li>renditionVisible: equivalent of the 'visible' attribute on a rendition definition,\n            true if this video conversion is a rendition and should be visible in the UI, false otherwise</li>\n    </ul>\n</p>\n",
              "documentationHtml": "<p>\nExtension point to contribute available video conversions\n</p><p>\nSince 7.2, 2 new attributes are available:\n</p><ul><li>rendition: true if this video conversion should be exposed as a rendition, false otherwise.</li><li>renditionVisible: equivalent of the &#39;visible&#39; attribute on a rendition definition,\ntrue if this video conversion is a rendition and should be visible in the UI, false otherwise</li></ul>\n",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.VideoService/ExtensionPoints/org.nuxeo.ecm.platform.video.service.VideoService--videoConversions",
              "id": "org.nuxeo.ecm.platform.video.service.VideoService--videoConversions",
              "label": "videoConversions (org.nuxeo.ecm.platform.video.service.VideoService)",
              "name": "videoConversions",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.video.service.VideoService",
              "descriptors": [
                "org.nuxeo.ecm.platform.video.service.AutomaticVideoConversion"
              ],
              "documentation": "\n      Extension point to contribute default video conversions\n      launched after the creation of a Video document.\n    \n",
              "documentationHtml": "<p>\nExtension point to contribute default video conversions\nlaunched after the creation of a Video document.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.VideoService/ExtensionPoints/org.nuxeo.ecm.platform.video.service.VideoService--automaticVideoConversions",
              "id": "org.nuxeo.ecm.platform.video.service.VideoService--automaticVideoConversions",
              "label": "automaticVideoConversions (org.nuxeo.ecm.platform.video.service.VideoService)",
              "name": "automaticVideoConversions",
              "version": "2021.62.7"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.video.service.VideoService",
              "descriptors": [
                "org.nuxeo.ecm.platform.video.service.Configuration"
              ],
              "documentation": "<p>Since 7.4.</p>\n<p>\n      Extension point to configure the VideoService, such as:\n        <ul>\n        <li>When to take the preview screenshot (percentage of the video duration)</li>\n        <li>Storyboard thumbnails count</li>\n        <li>Minimum duration of the video to generate storyboard (0 means always, &lt; 0 means never)</li>\n    </ul>\n</p>\n",
              "documentationHtml": "<p>\n</p><p>Since 7.4.</p>\n<p>\nExtension point to configure the VideoService, such as:\n</p><ul><li>When to take the preview screenshot (percentage of the video duration)</li><li>Storyboard thumbnails count</li><li>Minimum duration of the video to generate storyboard (0 means always, &lt; 0 means never)</li></ul>\n",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.VideoService/ExtensionPoints/org.nuxeo.ecm.platform.video.service.VideoService--configuration",
              "id": "org.nuxeo.ecm.platform.video.service.VideoService--configuration",
              "label": "configuration (org.nuxeo.ecm.platform.video.service.VideoService)",
              "name": "configuration",
              "version": "2021.62.7"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.VideoService",
          "name": "org.nuxeo.ecm.platform.video.service.VideoService",
          "requirements": [],
          "resolutionOrder": 597,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.video.service.VideoService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.service.VideoService/Services/org.nuxeo.ecm.platform.video.service.VideoService",
              "id": "org.nuxeo.ecm.platform.video.service.VideoService",
              "overriden": false,
              "version": "2021.62.7"
            }
          ],
          "startOrder": 910,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.service.VideoService\">\n\n  <implementation\n    class=\"org.nuxeo.ecm.platform.video.service.VideoServiceImpl\" />\n\n  <service>\n    <provide\n      interface=\"org.nuxeo.ecm.platform.video.service.VideoService\" />\n  </service>\n\n  <documentation>\n    The VideoService provides extension points to register\n    named video conversions and default conversions to run\n    when importing a video.\n  </documentation>\n\n  <extension-point name=\"videoConversions\">\n    <documentation>\n      Extension point to contribute available video conversions\n      <p>\n        Since 7.2, 2 new attributes are available:\n        <ul>\n          <li>rendition: true if this video conversion should be exposed as a rendition, false otherwise.</li>\n          <li>renditionVisible: equivalent of the 'visible' attribute on a rendition definition,\n            true if this video conversion is a rendition and should be visible in the UI, false otherwise</li>\n        </ul>\n      </p>\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.video.service.VideoConversion\" />\n  </extension-point>\n\n  <extension-point name=\"automaticVideoConversions\">\n    <documentation>\n      Extension point to contribute default video conversions\n      launched after the creation of a Video document.\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.video.service.AutomaticVideoConversion\" />\n  </extension-point>\n\n  <extension-point name=\"configuration\">\n    <documentation>\n      <p>Since 7.4.</p>\n      <p>\n      Extension point to configure the VideoService, such as:\n        <ul>\n          <li>When to take the preview screenshot (percentage of the video duration)</li>\n          <li>Storyboard thumbnails count</li>\n          <li>Minimum duration of the video to generate storyboard (0 means always, &lt; 0 means never)</li>\n        </ul>\n      </p>\n    </documentation>\n    <object\n      class=\"org.nuxeo.ecm.platform.video.service.Configuration\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.api.thumbnail.ThumbnailService--thumbnailFactory",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.core.thumbnailfactory/Contributions/org.nuxeo.ecm.platform.video.core.thumbnailfactory--thumbnailFactory",
              "id": "org.nuxeo.ecm.platform.video.core.thumbnailfactory--thumbnailFactory",
              "registrationOrder": 3,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.api.thumbnail.ThumbnailService",
                "name": "org.nuxeo.ecm.core.api.thumbnail.ThumbnailService",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"thumbnailFactory\" target=\"org.nuxeo.ecm.core.api.thumbnail.ThumbnailService\">\n    <thumbnailFactory facet=\"Video\" factoryClass=\"org.nuxeo.ecm.platform.video.adapter.ThumbnailVideoFactory\" name=\"thumbnailVideoFactory\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.core.thumbnailfactory",
          "name": "org.nuxeo.ecm.platform.video.core.thumbnailfactory",
          "requirements": [],
          "resolutionOrder": 598,
          "services": [],
          "startOrder": 579,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.core.thumbnailfactory\">\n\n  <extension target=\"org.nuxeo.ecm.core.api.thumbnail.ThumbnailService\"\n    point=\"thumbnailFactory\">\n    <thumbnailFactory name=\"thumbnailVideoFactory\"\n      facet=\"Video\"\n      factoryClass=\"org.nuxeo.ecm.platform.video.adapter.ThumbnailVideoFactory\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-thumbnailfactory-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent--command",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.tools.commandlines/Contributions/org.nuxeo.ecm.platform.video.tools.commandlines--command",
              "id": "org.nuxeo.ecm.platform.video.tools.commandlines--command",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "name": "org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"command\" target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\">\n\n    <command enabled=\"true\" name=\"videoClosedCaptionsExtractor\">\n      <commandLine>ccextractor</commandLine>\n      <parameterString>#{sourceFilePath} -out=#{outFormat} -trim -o #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ccextractor.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"videoPartClosedCaptionsExtractor\">\n      <commandLine>ccextractor</commandLine>\n      <parameterString>#{sourceFilePath} -out=#{outFormat} -startat #{startAt} -endat #{endAt} -trim -o #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ccextractor.</installationDirective>\n    </command>\n\n    <command enabled=\"true\" name=\"videoConcat\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -f concat -safe 0 -i #{listFilePath} -c copy #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This one is very fast, but you may miss frames. Use it when you are sure you'll get the correct cut -->\n    <command enabled=\"true\" name=\"videoSlicerByCopy\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} -c copy #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This on is the basic slicing. It re-encodes the video, so it it is slower than videoSlicerCopy -->\n    <command enabled=\"true\" name=\"videoSlicer\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This enables video slicing starting from the specific time -->\n    <command enabled=\"true\" name=\"videoSlicerStartAt\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- Slices in n segment of #duration each. outFilePath is an expression\n         (OUT%03d.mp4 for example) so ffmpeg creates one file/segment -->\n    <command enabled=\"true\" name=\"videoSlicerSegments\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -map 0 -c copy -f segment -segment_time #{duration} -reset_timestamps 1\n        #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- filterComplex is the full filter. For example: \"overlay=10:10\" -->\n    <command enabled=\"true\" name=\"videoWatermarkWithPicture\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -i #{pictureFilePath} -filter_complex #{filterComplex} #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.tools.commandlines",
          "name": "org.nuxeo.ecm.platform.video.tools.commandlines",
          "requirements": [
            "org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib"
          ],
          "resolutionOrder": 599,
          "services": [],
          "startOrder": 586,
          "version": "2021.62.7",
          "xmlFileContent": "<component name=\"org.nuxeo.ecm.platform.video.tools.commandlines\">\n\n  <require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>\n\n  <extension\n      target=\"org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent\"\n      point=\"command\">\n\n    <command name=\"videoClosedCaptionsExtractor\" enabled=\"true\">\n      <commandLine>ccextractor</commandLine>\n      <parameterString>#{sourceFilePath} -out=#{outFormat} -trim -o #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ccextractor.</installationDirective>\n    </command>\n\n    <command name=\"videoPartClosedCaptionsExtractor\" enabled=\"true\">\n      <commandLine>ccextractor</commandLine>\n      <parameterString>#{sourceFilePath} -out=#{outFormat} -startat #{startAt} -endat #{endAt} -trim -o #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ccextractor.</installationDirective>\n    </command>\n\n    <command name=\"videoConcat\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -f concat -safe 0 -i #{listFilePath} -c copy #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This one is very fast, but you may miss frames. Use it when you are sure you'll get the correct cut -->\n    <command name=\"videoSlicerByCopy\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} -c copy #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This on is the basic slicing. It re-encodes the video, so it it is slower than videoSlicerCopy -->\n    <command name=\"videoSlicer\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} -t #{duration} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- This enables video slicing starting from the specific time -->\n    <command name=\"videoSlicerStartAt\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -ss #{startAt} #{outFilePath}</parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- Slices in n segment of #duration each. outFilePath is an expression\n         (OUT%03d.mp4 for example) so ffmpeg creates one file/segment -->\n    <command name=\"videoSlicerSegments\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -map 0 -c copy -f segment -segment_time #{duration} -reset_timestamps 1\n        #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n    <!-- filterComplex is the full filter. For example: \"overlay=10:10\" -->\n    <command name=\"videoWatermarkWithPicture\" enabled=\"true\">\n      <commandLine>ffmpeg</commandLine>\n      <parameterString>-y -i #{sourceFilePath} -i #{pictureFilePath} -filter_complex #{filterComplex} #{outFilePath}\n      </parameterString>\n      <installationDirective>You need to install ffmpeg.</installationDirective>\n    </command>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-tools-commandlines-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.operation.OperationServiceComponent--operations",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.video.tools.operations/Contributions/org.nuxeo.ecm.video.tools.operations--operations",
              "id": "org.nuxeo.ecm.video.tools.operations--operations",
              "registrationOrder": 30,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "name": "org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"operations\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.AddWatermarkToVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.ConcatVideos\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.ExtractClosedCaptionsFromVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.SliceVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.SliceVideoInParts\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.video.tools.operations",
          "name": "org.nuxeo.ecm.video.tools.operations",
          "requirements": [],
          "resolutionOrder": 600,
          "services": [],
          "startOrder": 652,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.video.tools.operations\">\n\n  <extension target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\" point=\"operations\">\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.AddWatermarkToVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.ConcatVideos\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.ExtractClosedCaptionsFromVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.SliceVideo\"/>\n    <operation class=\"org.nuxeo.ecm.platform.video.tools.operations.SliceVideoInParts\"/>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-tools-operations-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.video.tools.service.VideoToolsServiceImpl",
          "documentation": "\n    The VideoToolsService provides tools for performing different actions in videos, such\n    as slicing, watermarking, etc.\n  \n",
          "documentationHtml": "<p>\nThe VideoToolsService provides tools for performing different actions in videos, such\nas slicing, watermarking, etc.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.tools.VideoToolsService",
          "name": "org.nuxeo.ecm.platform.video.tools.VideoToolsService",
          "requirements": [],
          "resolutionOrder": 601,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.video.tools.VideoToolsService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.tools.VideoToolsService/Services/org.nuxeo.ecm.platform.video.tools.VideoToolsService",
              "id": "org.nuxeo.ecm.platform.video.tools.VideoToolsService",
              "overriden": false,
              "version": "2021.62.7"
            }
          ],
          "startOrder": 911,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.tools.VideoToolsService\">\n\n  <implementation class=\"org.nuxeo.ecm.platform.video.tools.service.VideoToolsServiceImpl\"/>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.video.tools.VideoToolsService\"/>\n  </service>\n\n  <documentation>\n    The VideoToolsService provides tools for performing different actions in videos, such\n    as slicing, watermarking, etc.\n  </documentation>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-tools-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.work.service--queues",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.workmanager/Contributions/org.nuxeo.ecm.platform.video.workmanager--queues",
              "id": "org.nuxeo.ecm.platform.video.workmanager--queues",
              "registrationOrder": 13,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.work.service",
                "name": "org.nuxeo.ecm.core.work.service",
                "type": "service"
              },
              "version": "2021.62.7",
              "xml": "<extension point=\"queues\" target=\"org.nuxeo.ecm.core.work.service\">\n    <queue id=\"videoConversion\">\n      <maxThreads>2</maxThreads>\n      <category>videoConversion</category>\n    </queue>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video.workmanager",
          "name": "org.nuxeo.ecm.platform.video.workmanager",
          "requirements": [],
          "resolutionOrder": 602,
          "services": [],
          "startOrder": 587,
          "version": "2021.62.7",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.video.workmanager\" version=\"1.0\">\n\n  <extension target=\"org.nuxeo.ecm.core.work.service\" point=\"queues\">\n    <queue id=\"videoConversion\">\n      <maxThreads>2</maxThreads>\n      <category>videoConversion</category>\n    </queue>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/video-workmanager-config.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-platform-video-2021.62.7.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.video/org.nuxeo.ecm.platform.video",
      "id": "org.nuxeo.ecm.platform.video",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.24\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 2021.62.7-t20241029-084712\r\nBundle-Name: Nuxeo Video\r\nBundle-SymbolicName: org.nuxeo.ecm.platform.video\r\nBundle-Vendor: Nuxeo\r\nNuxeo-Component: OSGI-INF/adapters-contrib.xml,OSGI-INF/commandline-co\r\n ntrib.xml,OSGI-INF/video-bulk-contrib.xml,OSGI-INF/convert-service-co\r\n ntrib.xml,OSGI-INF/core-types-contrib.xml,OSGI-INF/filemanager-import\r\n er-contrib.xml,OSGI-INF/lifecycle-contrib.xml,OSGI-INF/ui-types-contr\r\n ib.xml,OSGI-INF/video-listeners-contrib.xml,OSGI-INF/video-renditions\r\n -contrib.xml,OSGI-INF/video-service-contrib.xml,OSGI-INF/video-servic\r\n e.xml,OSGI-INF/video-thumbnailfactory-contrib.xml,OSGI-INF/video-tool\r\n s-commandlines-contrib.xml,OSGI-INF/video-tools-operations-contrib.xm\r\n l,OSGI-INF/video-tools-service.xml,OSGI-INF/video-workmanager-config.\r\n xml\r\n\r\n",
      "maxResolutionOrder": 602,
      "minResolutionOrder": 586,
      "packages": [],
      "requirements": [],
      "version": "2021.62.7"
    }
  ],
  "creationDate": 1730823086020,
  "key": "Nuxeo Platform-2021.62",
  "name": "Nuxeo Platform",
  "operations": [
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Files",
      "contributingComponent": "org.nuxeo.ecm.video.tools.operations",
      "description": "Watermark the video with the picture stored in file:content of watermark, at the position(x, y) from the left-top corner of the picture.",
      "hierarchyPath": "/op:Video.AddWatermark",
      "label": "Watermarks a Video with a Picture",
      "name": "Video.AddWatermark",
      "operationClass": "org.nuxeo.ecm.platform.video.tools.operations.AddWatermarkToVideo",
      "params": [
        {
          "description": null,
          "isRequired": true,
          "name": "watermark",
          "order": 0,
          "type": "document",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "x",
          "order": 0,
          "type": "string",
          "values": [
            "0"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "y",
          "order": 0,
          "type": "string",
          "values": [
            "0"
          ],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "Video.AddWatermark",
      "version": "2021.62.7"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Files",
      "contributingComponent": "org.nuxeo.ecm.video.tools.operations",
      "description": "Merge 2-n videos in one.",
      "hierarchyPath": "/op:Video.Concat",
      "label": "Joins two or more videos sequentially.",
      "name": "Video.Concat",
      "operationClass": "org.nuxeo.ecm.platform.video.tools.operations.ConcatVideos",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "blob",
        "documents",
        "blob"
      ],
      "url": "Video.Concat",
      "version": "2021.62.7"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.video.tools.operations",
      "description": "Extracts the closed captions from the whole video or from a part of it when startAt and end time is provided. The output format references how the output is generated, and xpath can be used to indicate the video blob when using documents.",
      "hierarchyPath": "/op:Video.ExtractClosedCaptions",
      "label": "Extracts closed captions from the video.",
      "name": "Video.ExtractClosedCaptions",
      "operationClass": "org.nuxeo.ecm.platform.video.tools.operations.ExtractClosedCaptionsFromVideo",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "endAt",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "outFormat",
          "order": 0,
          "type": "string",
          "values": [
            "ttxt",
            "srt",
            "txt"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "startAt",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "Video.ExtractClosedCaptions",
      "version": "2021.62.7"
    },
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.video.tools.operations",
      "description": "SliceVideo the input blob starting at startAt, for a certain duration. The duration and startAt arguments are optional, but not simultaneously. A specific converter can be used.",
      "hierarchyPath": "/op:Video.Slice",
      "label": "SliceVideo the video for a given duration and startAt time.",
      "name": "Video.Slice",
      "operationClass": "org.nuxeo.ecm.platform.video.tools.operations.SliceVideo",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "duration",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "encode",
          "order": 0,
          "type": "boolean",
          "values": [
            "true"
          ],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "startAt",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "blob",
        "bloblist",
        "bloblist",
        "document",
        "blob",
        "documents",
        "bloblist"
      ],
      "url": "Video.Slice",
      "version": "2021.62.7"
    },
    {
      "@type": "NXOperation",
      "aliases": [
        "Video.SliceInParts"
      ],
      "category": "Conversion",
      "contributingComponent": "org.nuxeo.ecm.video.tools.operations",
      "description": "Slices the video in n parts of approximately the same duration each.",
      "hierarchyPath": "/op:Video.SliceInParts",
      "label": "SliceVideo a Video in Parts with equal duration.",
      "name": "Video.SliceInParts",
      "operationClass": "org.nuxeo.ecm.platform.video.tools.operations.SliceVideoInParts",
      "params": [
        {
          "description": null,
          "isRequired": false,
          "name": "duration",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "xpath",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "blob",
        "bloblist",
        "document",
        "bloblist"
      ],
      "url": "Video.SliceInParts",
      "version": "2021.62.7"
    }
  ],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1730823086020,
  "version": "2021.62"
}